Microcontrollers may have embedded processors, memories and special function analog and digital circuits. Analog circuits found in conventional microcontrollers include, for example, Continuous Time (CT) amplifiers having preset functions with given functional parameters. For instance, a CT analog amplifier might be configured as a fixed function circuit, such as a voltage amplifier, in which certain parameters, such as gain or bandwidth, might be altered by programming.
Switched Capacitor (SC) analog circuits are also frequently incorporated into microcontroller designs. SC analog circuits are somewhat more versatile than CT analog circuits in that it might be possible to alter both the circuit function as well as the parameters of the circuit function by programming. However, both CT and SC analog circuits found in conventional microcontrollers generally require programming before utilization, and neither can be dynamically programmed (programmed “on-the-fly”). General purpose digital circuits are frequently included in a microcontroller implementation. Such digital circuits are pre-programmed to realize certain digital functions such as logical operations, arithmetical functions, counting, and the like. These digital circuits are generally in the form of a Programmed Logic Array (PLA) or FPGA. Furthermore, such digital circuits that require pre-programming are generally not dynamically programmable (programmable “on-the-fly”). The main difficulty is in the generality of such a digital circuit, which requires an excessive amount of digital logic, which in turn occupies a large area on a semiconductor chip as well as an increased cost of manufacturing.
Several other design considerations related to microcontroller utilization either go unaddressed, or require separate functionalities to enable them. For instance, conventional designs do not offer a programmable analog circuit array with both CT analog circuits and SC analog circuits on the same semiconductor chip with a programmable array of digital circuits. As a result, realization of a function requiring complex communication between analog circuits and digital circuits often requires the use of multiple semiconductor chips. Further, conventional microcontroller realizations generally require pre-programming and cannot be dynamically programmed.